package com.rxy.zkclient;

import org.I0Itec.zkclient.IZkDataListener;
import org.I0Itec.zkclient.ZkClient;

public class Get_Data_Sample {
    public static void main(String[] args) throws InterruptedException {
        ZkClient zkClient = new ZkClient("192.168.31.247:2181");
        String path = "/rxy-zkClient-Ep";
        // 判断节点是否存在
        boolean exists = zkClient.exists(path);
        if (!exists) {
            // 创建临时节点
            zkClient.createEphemeral(path, "123");
        }
        // 注册监听（监听节点数据的变化）
        zkClient.subscribeDataChanges(path, new IZkDataListener() {
            /**
             * 当节点数据内容发生变化时，执行的回调方法
             * @param s path
             * @param o 变化后的节点内容
             */
            @Override
            public void handleDataChange(String s, Object o) throws Exception {
                System.out.println(s + "该节点内容被更新，更新后的内容:"+ o);
            }

            /**
             * 当节点被删除时，执行的回调方法
             * @param s path
             */
            @Override
            public void handleDataDeleted(String s) throws Exception {
                System.out.println(s + "该节点被删除");
            }
        });
        // 获取节点内容
        Object data = zkClient.readData(path);
        System.out.println(path + "节点内容：" + data);
        // 更新节点内容
        zkClient.writeData(path, 456);
        Thread.sleep(1000);
        // 删除节点
        zkClient.delete(path);
        Thread.sleep(1000);

    }
}
